package scau.hotel.hotel_service.service;

import scau.hotel.hotel_service.entity.CheckinInfor;
import scau.hotel.hotel_service.entity.Checkout;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import scau.hotel.hotel_service.vo.CheckoutVo;
import scau.hotel.hotel_model.controller.RespBean;

import java.util.List;

/**
 * (Checkout)表服务接口
 *
 * @author makejava
 * @since 2022-04-11 22:59:44
 */
public interface CheckoutService {

    /**
     * 通过ID查询单条数据
     *
     * @param checkoutId 主键
     * @return 实例对象
     */
    Checkout queryById(Integer checkoutId);

    /**
     * 分页查询
     *
     * @param checkout 筛选条件
     * @return 查询结果
     */
    List<Checkout> queryAll(Checkout checkout);

    /**
     * 分页查询
     *
     * @param checkout 筛选条件
     * @param pageRequest      分页对象
     * @return 查询结果
     */
    Page<Checkout> queryByPage(Checkout checkout, PageRequest pageRequest);

    /**
     * 新增数据
     *
     * @param checkout 实例对象
     * @return 实例对象
     */
    RespBean insert(Checkout checkout);

    /**
     * 修改数据
     *
     * @param checkout 实例对象
     * @return 实例对象
     */
    RespBean update(Checkout checkout);

    /**
     * 通过主键删除数据
     *
     * @param checkoutId 主键
     * @return 是否成功
     */
    boolean deleteById(Integer checkoutId);

    /**
     * 查询提示今天即将退房或超时未退房的订单明细
     * @return
     */
    List<CheckinInfor> queryTodayCheckout();

    /**
     * 返回退房房间的所有入住人
     * @return RespBean
     */
    RespBean returnCheckoutCus(List<String> arrays);

    /**
     * 退房
     * @return RespBean
     */
    RespBean confirmCheckout(List<CheckoutVo> checkoutVoList);
}
